<?php

use Workerman\Worker;

require_once __DIR__ . '/vendor/autoload.php';

// Create a Websocket server
//$ws_worker = new Worker('websocket://192.168.2.101:8080');
//$ws_worker = new Worker('websocket://192.168.118.220:8080');
$ws_worker = new Worker('websocket://122.114.76.193:12345');

// 4 processes
$ws_worker->count = 1;

// Emitted when new connection come
$ws_worker->onConnect = function ($connection) {
    $data = array();
    $data[0] = 'user_add';
    $data['wsid'] = $connection->id;
    $data['wc'] = count($connection->worker->connections);
    $data = json_encode(array($data));
//    $connection->send($data);
    foreach($connection->worker->connections as $con){
        $con->send($data);
    }
    echo "New connection {$connection->id}\n";
};

// Emitted when data received
$ws_worker->onMessage = function ($connection, $data) {
    $data = json_decode($data, true);
    foreach($data as $i => $v){
        $data[$i]['wsid'] = $connection->id;
        $data[$i]['wc'] = count($connection->worker->connections);
    }
    $data = json_encode($data);
    // Send hello $data
//    $connection->send($data);
    foreach($connection->worker->connections as $con){
        $con->send($data);
    }
};

// Emitted when connection closed
$ws_worker->onClose = function ($connection) {
    $data = array();
    $data[0] = 'user_close';
    $data['wsid'] = $connection->id;
    $data['wc'] = count($connection->worker->connections) - 1;
    $data = json_encode(array($data));
//    $connection->send($data);
    foreach($connection->worker->connections as $con){
        $con->send($data);
    }
    echo "Connection closed\n";
};

// Run worker
Worker::runAll();
